[IAD-BACKEND-004] Создать метод /api/v1/auth/refresh

Разработка auth-identity-service (Backend): Реализация метода ротации пары токенов сессии.

Author

IAD Domain Lead

Published

July 13, 2026

NoteКраткая карточка задачи
  • Эпик: EPIC-IAD-001
  • Компонент: auth-identity-service (FastAPI / gRPC)
  • Статус: Готово к реализации
  • Ссылка на Метод: /api/v1/auth/refresh

1. Бизнес-контекст и цель (Business Context)

Короткоживущие Access-токены требуют прозрачного обновления на клиенте без участия пользователя. Метод должен принимать старый Refresh-токен, аннулировать его в базе и выдавать новую чистую пару.

Цель задачи: Реализовать логику ротации сессий и проверку TTL токена обновления в файле refresh.py.

2. Пользовательские истории (User Stories)

Как Авторизованный пользователь приложения FoodLifeCycle,
Я хочу, чтобы приложение само обновляло сессию при истечении токена доступа,
Чтобы не прерывать процесс сканирования чеков или готовки.


Задача 1: Разработка эндпоинтов авторизации, обновления сессий и логаута на API Gateway

  • Репозиторий / Компонент: backend-api (API Gateway).
  • Контракт методов:
    1. POST /api/v1/auth/register (или /login)
    2. POST /api/v1/auth/refresh
    3. POST /api/v1/auth/logout
  • Инструкция по шагам:
    1. На Шагах 1-3: Написать эндпоинты аутентификации. Реализовать первичную Pydantic-валидацию входящего тела (поля email, password) и пробросить запрос по внутреннему gRPC/HTTP протоколу в auth-service.
    2. На Шагах 9-11: Для эндпоинта ротации токенов принимать в теле запроса current_refresh_token. Вызывать внутренний синхронный gRPC-метод авторизационного воркера VerifyAndRotate.
    3. На Шагах 15-17: Для эндпоинта logout извлекать строку Access Token из заголовка Authorization: Bearer <token> и Refresh Token из тела запроса. Направлять команду на отзыв сессии в auth-service. Возвращать клиенту статус 200 OK (Шаг 20).